(function jvxPixelWrapper(){ var isDebug = false; var existingData = ["{Product_ID}"]; var existingGroups = {"group1":["{Product_ID}"]}; var domain = "generic"; var pixelParams = {"px":"05c04ffc9d188e","cData":"{Product_ID}"}; var gdprParams = ""; var addnlPixelData = function getRetargetingData() { var a = function(a) { var e = document.createElement("script"); e.src = "https://secure.adnxs.com/seg?add=" + a + "&t=1", document.getElementsByTagName("body")[0].appendChild(e) }; const e = window.location.href; if (e.startsWith("https://reservations.rosewoodhotels.com/checkout?")) { const n = e.match(/[\?&]hotel=(\w+)/); if (n && 2 == n.length) { switch (n[1]) { case "6222": a(18946628); break; case "60695": a(18946637); break; case "76322": a(18946640); break; case "6559": a(18946642); break; case "75079": a(18946643); break; case "57071": a(18946647); break; case "554": a(18946651); break; case "75078": a(18946653); break; case "1946": a(18946654); break; case "6074": a(18946663) } } } else { switch (window.location.pathname.toLowerCase()) { case "/en/default": a(18397295); break; case "/sc/default": a(18397330); break; case "/en/hong-kong": a(18397393); break; case "/sc/hong-kong": a(18397394); break; case "/tc/hong-kong": a(18397402); break; case "/en/beijing": a(18397410); break; case "/sc/beijing": a(18397411); break; case "/en/sanya": a(18397511); break; case "/sc/sanya": a(18397512); break; case "/en/jeddah": a(18397614); break; case "/sc/jeddah": a(18397621); break; case "/ar/jeddah": a(18397635); break; case "/en/luang-prabang": a(18397973); break; case "/sc/luang-prabang": a(18397980); break; case "/en/bangkok": a(18398080); break; case "/en/phuket": a(18398088); break; case "/sc/phuket": a(18398089); break; case "/en/yangon": a(18397342); break; case "/en/guangzhou": a(18397449); break; case "/sc/guangzhou": a(18397519); break; case "/en/phnom-penh": a(18397539), a(18637255); break; case "/en/abu-dhabi": a(18397631); break; case "/sc/abu-dhabi": a(18397662); break; case "/ar/abu-dhabi": a(18397679); break; case "/en/the-carlyle-new-york": a(18637040); break; case "/sc/the-carlyle-new-york": a(18637039); break; case "/en/hotel-georgia-vancouver": a(18637105); break; case "/sc/hotel-georgia-vancouver": a(18637117); break; case "/en/mansion-on-turtle-creek-dallas": a(18637129); break; case "/en/inn-of-the-anasazi-santa-fe": a(18637136); break; case "/en/cordevalle-northern-california": a(18637137); break; case "/sc/cordevalle-northern-california": a(18637140); break; case "/en/sand-hill-menlo-park": a(18637142); break; case "/sc/sand-hill-menlo-park": a(18637145); break; case "/en/washington-dc": a(18637168); break; case "/en/miramar-beach-montecito": a(18637171); break; case "/sc/miramar-beach-montecito": a(18637173); break; case "/en/kona-village": a(18637174); break; case "/en/houston": a(18637182); break; case "/en/las-ventanas-los-cabos": a(18637183); break; case "/es/las-ventanas-los-cabos": a(18637186); break; case "/sc/las-ventanas-los-cabos": a(18637188); break; case "/en/mayakoba-riviera-maya": a(18637201); break; case "/es/mayakoba-riviera-maya": a(18637202); break; case "/sc/mayakoba-riviera-maya": a(18637203); break; case "/pt/mayakoba-riviera-maya": a(18637205); break; case "/en/puebla": a(18637206); break; case "/es/puebla": a(18637208); break; case "/sc/puebla": a(18637209); break; case "/en/san-miguel-de-allende": a(18637211); break; case "/es/san-miguel-de-allende": a(18637212); break; case "/sc/san-miguel-de-allende": a(18637216); break; case "/en/mandarina": a(18637217); break; case "/en/bermuda": a(18637219); break; case "/sc/bermuda": a(18637220); break; case "/en/baha-mar": a(18637221); break; case "/sc/baha-mar": a(18637223); break; case "/en/half-moon-bay-antigua": a(18637224); break; case "/en/little-dix-bay-virgin-gorda": a(18637225); break; case "/en/papagayo": a(18637227); break; case "/en/sao-paulo": a(18637228); break; case "/en/london": a(18637229); break; case "/es/london": a(18637235); break; case "/sc/london": a(18637238); break; case "/en/castiglion-del-bosco": a(18637239); break; case "/sc/castiglion-del-bosco": a(18637240); break; case "/en/hotel-de-crillon": a(18637242); break; case "/fr/hotel-de-crillon": a(18637243); break; case "/en/edinburgh": a(18637245); break; case "/en/grosvenor-square": a(18637246); break; case "/en/munich": a(18637247); break; case "/en/vienna": a(18637248); break; case "/en/venice": a(18637249); break; case "/en/siem-reap": a(18637256); break; case "/sc/siem-reap": a(18637257); break; case "/en/chengdu": a(18637258); break; case "/sc/chengdu": a(18637259); break; case "/en/shenzhen": a(18637261); break; case "/sc/shenzhen": a(18637263); break; case "/en/shanghai": a(18637264); break; case "/sc/shanghai": a(18637265); break; case "/en/ningbo": a(18637266); break; case "/sc/ningbo": a(18637268); break; case "/en/taipei": a(18637269); break; case "/sc/taipei": a(18637273); break; case "/tc/taipei": a(18637276); break; case "/en/hermana-mayor": a(18637277); break; case "/sc/hermana-mayor": a(18637278); break; case "/en/hoi-an": a(18637279); break; case "/sc/hoi-an": a(18637282); break; case "/en/beijing/offers": a(18637536); break; case "/sc/beijing/offers": a(18637538); break; case "/en/jeddah/offers": a(18637539); break; case "/ar/jeddah/offers": a(18637540); break; case "/en/sanya/offers": a(18637550); break; case "/sc/sanya/offers": a(18637551); break; case "/en/hong-kong/offers": a(18637554); break; case "/sc/hong-kong/offers": a(18637555); break; case "/tc/hong-kong/offers": a(18637557); break; case "/en/luang-prabang/offers": a(18637559); break; case "/en/bangkok/offers": a(18637560); break; case "/en/phuket/offers": a(18637561); break; case "/sc/phuket/offers": a(18637562); break; case "/en/yangon/offers": a(18637563) } window.location.pathname.startsWith("/en/hong-kong/accommodation") ? a(18397403) : window.location.pathname.startsWith("/sc/hong-kong/accommodation") ? a(18397407) : window.location.pathname.startsWith("/tc/hong-kong/accommodation") ? a(18397409) : window.location.pathname.startsWith("/en/beijing/accommodation") ? a(18397450) : window.location.pathname.startsWith("/sc/beijing/accommodation") ? a(18397466) : window.location.pathname.startsWith("/en/sanya/accommodation") ? a(18397513) : window.location.pathname.startsWith("/sc/sanya/accommodation") ? a(18397520) : window.location.pathname.startsWith("/en/jeddah/accommodation") ? a(18397853) : window.location.pathname.startsWith("/sc/jeddah/accommodation") ? a(18397859) : window.location.pathname.startsWith("/ar/jeddah/accommodation") ? a(18397866) : window.location.pathname.startsWith("/en/luang-prabang/accommodation") ? a(18397997) : window.location.pathname.startsWith("/sc/luang-prabang/accommodation") ? a(18398005) : window.location.pathname.startsWith("/en/bangkok/accommodation") ? a(18398081) : window.location.pathname.startsWith("/en/phuket/accommodation") ? a(18398103) : window.location.pathname.startsWith("/sc/phuket/accommodation") ? a(18398120) : window.location.pathname.startsWith("/en/yangon/accommodation") ? a(18397430) : window.location.pathname.startsWith("/en/guangzhou/accommodation") ? a(18397497) : window.location.pathname.startsWith("/sc/guangzhou/accommodation") ? a(18397510) : window.location.pathname.startsWith("/en/phnom-penh/accommodation") ? a(18397567) : window.location.pathname.startsWith("/en/abu-dhabi/accommodation") ? a(18397727) : window.location.pathname.startsWith("/sc/abu-dhabi/accommodation") ? a(18397749) : window.location.pathname.startsWith("/ar/abu-dhabi/accommodation") && a(18397784) } return [pixelParams.cData] }; var partnerSyncPixels = {}; var us_privacy_string = ""; function getParamValue(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } function firePixel(pixelId, pixelVals) { var pixelURL = "https://pxl.jivox.com/tags/re/pxrc.php?c=1&px=" + pixelId + "" + gdprParams + us_privacy_string; // basic URL if (domain === "ecom") { var pxrcParams = {}, attr; for (attr in pixelParams) { pxrcParams[attr] = pixelParams[attr]; } for (attr in pixelVals) { pxrcParams[attr] = pixelVals[attr]; } for (attr in pxrcParams) { pixelURL += "&" + attr + "=" + pxrcParams[attr]; } } else { pixelURL += "&cData=" + pixelVals.join(); // add derived params to the basic URL } pixelURL += "&r=" + Math.random(); // add a random no so that we are not cached var appendNode = document.body ? document.body : document.getElementsByTagName("head")[0]; var scriptEl = document.createElement("script"); scriptEl.src = pixelURL; appendNode.appendChild(scriptEl); } function fireMultiPixel(pixelValObj) { var uniqueId = Math.floor(Math.random() * (10000)), pixelObj = JSON.stringify(pixelValObj); /*********** iFrame Form POST *****************/ if (pixelParams.pxType == null || pixelParams.pxType == "1") { var jvxFrame = document.createElement('iframe'); jvxFrame.style.width = '0px'; jvxFrame.style.height= '0px'; jvxFrame.style.display = 'none'; jvxFrame.id = "jvxFrame" + uniqueId; var jvxForm = document.createElement('form'); jvxForm.id = "jvxForm" + uniqueId; jvxForm.method = "post"; jvxForm.action = "https://pxl.jivox.com/tags/re/pxrc.php?"+ gdprParams + us_privacy_string; var jvxFormField1 = document.createElement('input'); jvxFormField1.name = "c" ; jvxFormField1.type = 'text'; jvxFormField1.value = "1"; jvxForm.appendChild(jvxFormField1); var jvxFormField4 = document.createElement('input'); jvxFormField4.name = "px" ; jvxFormField4.type = 'text'; jvxFormField4.value = pixelParams.px; jvxForm.appendChild(jvxFormField4); var jvxFormField2 = document.createElement('input'); jvxFormField2.name = "cMultiData" ; jvxFormField2.type = 'text'; jvxFormField2.value = pixelObj; jvxFormField2.type = 'text'; jvxForm.appendChild(jvxFormField2); var jvxFormField3 = document.createElement("input"); jvxFormField3.type = 'submit'; jvxForm.appendChild(jvxFormField3); var appendNode = document.body ? document.body : document.getElementsByTagName("head")[0]; appendNode.appendChild(jvxFrame); var jvxHtml = ""; jvxFrame.contentWindow.document.open('text/html', 'replace'); jvxFrame.contentWindow.document.write(jvxHtml); jvxFrame.contentWindow.document.close(); jvxFrame.contentWindow.document.body.appendChild(jvxForm); /***************************** End ***************************/ jvxForm.submit(); } else if (pixelParams.pxType == "2") { /* COM: Since iFrame form post is adding new entry to browser history, Ajax call is being used to stop it. */ /* These changes has to be param driven and by default form post approach has to be executed. */ /************* Ajax call *************/ var fData = "c=1&px=" + pixelParams.px + "&cMultiData=" + pixelObj + gdprParams + us_privacy_string; var xmlhttp = new XMLHttpRequest(); if ("withCredentials" in xmlhttp) { // for Chrome, Firefox, Opera xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200 || xmlhttp.status == 304) { debugLog("post successfull"); } else { debugLog("post failed!"); } } } xmlhttp.open("POST", "https://pxl.jivox.com/tags/re/pxrc.php", true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.withCredentials = true; xmlhttp.send(fData); } else { // for IE < 10 var xdr = new XDomainRequest(); xdr.onerror = function(){debugLog("IE get failed!"); }; xdr.ontimeout = function(){debugLog("IE get failed!");}; xdr.onload = function() { debugLog("IE get successfull!"); }; xdr.open("GET", "https://pxl.jivox.com/tags/re/pxrc.php"+"?"+fData); xdr.send(); } /************* End *****************/ } } function firePartnerSyncCookiePixel(){ for (var key in partnerSyncPixels){ debugLog("PartnerSyncCookiePixel : "+key+" :"+ partnerSyncPixels[key]); var imgEl = document.createElement('img'); var URL = partnerSyncPixels[key]; if(URL.indexOf("?") == -1){ URL += "?r=" + Math.random(); }else{ URL += "&r=" + Math.random(); } imgEl.src = URL; } } function debugLog(val) { if (isDebug) { console.log(val); } } if(window.Prototype) { if(window.Prototype.Version && parseFloat(window.Prototype.Version) < 1.7) { var _json_stringify = JSON.stringify; JSON.stringify = function(value) { var _array_tojson = Array.prototype.toJSON; delete Array.prototype.toJSON; var r=_json_stringify(value); Array.prototype.toJSON = _array_tojson; return r; }; } } var data = addnlPixelData(); if (domain === 'ecom') { firePixel("05c04ffc9d188e", data); } else { if (Object.prototype.toString.call(data) === '[object Array]') { firePixel("05c04ffc9d188e", data); } else if (Object.prototype.toString.call(data) === '[object Object]' ) { fireMultiPixel(data); } if(Object.prototype.toString.call(partnerSyncPixels) === '[object Object]'){ firePartnerSyncCookiePixel(); } } })();